package com.css.chain;

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        Msg msg=new Msg();
        msg.setMsg("大家好：），<script>,欢迎访问mashib.com，大家都是996");

//        new scriptFilter().doFilter(msg);
//        new sensitiveFilter().doFilter(msg);

//        ----------------------------------------------
//        List<Filter> filterList=new ArrayList<>();
//        filterList.add(new scriptFilter());
//        filterList.add(new sensitiveFilter());
//        for (Filter f:filterList) {
//            f.doFilter(msg);
//        }
        //        ----------------------------------------------
        FilterChain filterChain=new FilterChain();
        filterChain.add(new ScriptFilter())
                   .add(new SensitiveFilter());


        FilterChain filterChain1=new FilterChain();
        filterChain1.add(new SmileFilter())
                .add(filterChain);
        filterChain1.doFilter(msg);
        System.out.println(msg.toString());
    }
}
class FilterChain implements Filter{
    List<Filter> filterList=new ArrayList<>();
    public FilterChain add(Filter filter){
        filterList.add(filter);
        return this;
    }
    public void doFilter(Msg msg){
        for (Filter f:filterList) {
            f.doFilter(msg);
        }
    }
}
interface Filter{
    void doFilter(Msg msg);
}
class ScriptFilter implements Filter{
    @Override
    public void doFilter(Msg msg) {
        msg.setMsg(msg.getMsg().replace('<','[').replace('>',']'));
    }
}
class SmileFilter implements Filter{
    @Override
    public void doFilter(Msg msg) {
        msg.setMsg(msg.getMsg().replaceAll("：）","=-="));
    }
}
class SensitiveFilter implements Filter{
    @Override
    public void doFilter(Msg msg) {
        msg.setMsg(msg.getMsg().replaceAll("996","955"));
    }
}
class Msg{
    String name;
    String msg;

    @Override
    public String toString() {
        return "Msg{" +
                "msg='" + msg + '\'' +
                '}';
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}
